import xlrd


def read_excel(file: str, sheet: str, has_header=True) -> list[tuple]:
    """读取Excel行数据，返回列表嵌套元组"""
    try:
        wb = xlrd.open_workbook(file)
        sh = wb.sheet_by_name(sheet)
        # 确定数据读取的起始行：
        # 如果有标题行(has_header=True)，则从第2行(索引1)开始读取
        # 如果没有标题行，则从第1行(索引0)开始读取
        start = 1 if has_header else 0
        # 使用列表推导式快速生成结果：
        # 1. 遍历从start到最后一行的所有行
        # 2. 对每一行调用sh.row_values(i)获取该行所有数据
        # 3. 转换为元组(tuple)并添加到列表
        # 4. 最终返回这个列表（列表嵌套元组的格式）
        return [tuple(sh.row_values(i)) for i in range(start, sh.nrows)]
    except Exception as e:
        print(f"错误: {e}")
        return []


if __name__ == "__main__":
    # 含标题行的数据
    print(read_excel("../data/test_data.xls", "login_data"))
    # 不含标题行的数据
    print(read_excel("../data/test_data.xls", "login_data", False))
